home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / dsp / dspgroup / asms.arc / FIRLPHY.ASM < prev    next >
Encoding:
Assembly Source File  |  1987-09-01  |  3.7 KB  |  204 lines

  1. ;**********************************************************************
  2. ;
  3. ;              FINITE IMPULSE RESPONSE (FIR)
  4. ;            LINEAR PHASE DIGITAL FILTER DESIGN
  5. ;                REMEZ EXCHANGE ALGORITHM
  6. ;
  7. ;                      LOWPASS FILTER
  8. ;
  9. ;                   FILTER LENGTH =  16
  10. ;
  11. ;              ***** IMPULSE RESPONSE *****
  12. ;
  13. ;            H( 1) =     256.268 = H( 16)
  14. ;             H( 2) =     237.613 = H( 15)
  15. ;             H( 3) =     325.903 = H( 14)
  16. ;             H( 4) =     416.034 = H( 13)
  17. ;             H( 5) =     500.751 = H( 12)
  18. ;             H( 6) =     572.556 = H( 11)
  19. ;             H( 7) =     624.633 = H( 10)
  20. ;             H( 8) =     652.009 = H(  9)
  21. ;
  22. ;                       BAND  1       BAND  2
  23. ; LOWER BAND EDGE      .0000000      .0800000
  24. ; UPPER BAND EDGE      .0700000      .5000000
  25. ; DESIRED VALUE       1.0000000      .0000000
  26. ; WEIGHTING           1.0000000   100.0000000
  27. ; DEVIATION            .9685936      .0096859
  28. ; DEVIATION IN DB     5.8831210   -40.2771700
  29. ;
  30. ; EXTREMAL FREQUENCIES--MAXIMA OF THE ERROR CURVE
  31. ;     .0700000    .0800000    .1034375    .1542187    .2128125
  32. ;    .2753125    .3397656    .4022656    .4686719
  33. ;
  34. ;**********************************************************************
  35. ;
  36. ;   CYCLES | EXECUTION TIME | PROGRAM MEMORY | DATA MEMORY
  37. ;       | (MICROSECONDS) |      (WORDS)    |     (WORDS)
  38. ;   -------|----------------|----------------|-------------
  39. ;       |            |             |
  40. ;     xxx  |      xxxx        |       xxx       |        xxx
  41. ;       |            |             |
  42. ;   -------------------------------------------------------
  43. ;
  44. ;   (EXCLUDING INITIALIZATION AND I/O)
  45. ;
  46. ;***********************************************************
  47. ;
  48. ;
  49. XN:    EQU 0
  50. XNM1:    EQU 1
  51. XNM2:    EQU 2
  52. XNM3:    EQU 3
  53. XNM4:    EQU 4
  54. XNM5:    EQU 5
  55. XNM6:    EQU 6
  56. XNM7:    EQU 7
  57. XNM8:    EQU 8
  58. XNM9:    EQU 9
  59. XNM10:    EQU 10
  60. XNM11:    EQU 11
  61. XNM12:    EQU 12
  62. XNM13:    EQU 13
  63. XNM14:    EQU 14
  64. XNM15:    EQU 15
  65. XNM16:    EQU 16
  66. XNM17:    EQU 17
  67. ;
  68. H0:    EQU 18
  69. H1:    EQU 19
  70. H2:    EQU 20
  71. H3:    EQU 21
  72. H4:    EQU 22
  73. H5:    EQU 23
  74. H6:    EQU 24
  75. H7:    EQU 25
  76. H8:    EQU 26
  77. ;
  78. MODE:    EQU 27
  79. CLOCK:    EQU 28
  80. MASK1:    EQU 29
  81. MASK2:    EQU 30
  82. YN:    EQU 31
  83. ONE:    EQU 32
  84. ;
  85.     ORG 0
  86. ;
  87.     B START
  88. ;
  89. ; COEFFICIENTS ARE INITIALLY ;
  90. ; STORED IN PROGRAM MEMORY   ;
  91. ;
  92. ; DUE TO THE SYMMETRY OF THE IMPULSE RESPONSE ;
  93. ; ONLY HALF OF THE SAMPLES OF THE IMPULSE     ;
  94. ; RESPONSE ARE STORED.    THIS MEANS THAT       ;
  95. ; h(N-1-n) = h(n).                  ;
  96. ;
  97. COEF:    dw 256 ;= H( 16)
  98.          dw 238 ;= H( 15)
  99.          dw 326 ;= H( 14)
  100.          dw 416 ;= H( 13)
  101.          dw 501 ;= H( 12)
  102.          dw 573 ;= H( 11)
  103.          dw 625 ;= H( 10)
  104.          dw 652 ;= H(  9)
  105.     dw    000AH
  106.     dw     0200H
  107.     dw    0800H
  108. ENDC:    dw    08000H
  109. ;
  110.  
  111. START:    LDPK 0
  112. ;
  113.     LACK 1
  114.     SACL ONE    ; CONTENT OF ONE IS 1 ;
  115. ;
  116.     LARK AR0,MASK2    ; THIS SECTION OF CODE LOADS  ;
  117.     LARK AR1,12    ; THE FILTER COEFFICIENTS AND ;
  118.     LACK ENDC    ; OTHER VALUES FROM PROGRAM   ;
  119. LOAD:    LARP AR0    ; MEMORY TO DATA MEMORY       ;
  120.     TBLR *-,AR1
  121.     SUB ONE
  122.     BANZ LOAD
  123. ;
  124.     NOP
  125.     NOP
  126. ;
  127. WAIT:    BIOZ NXTPT    ; BIO PIN GOES LOW WHEN A ;
  128.     B WAIT        ; NEW SAMPLE IS AVAILABLE ;
  129. ;
  130. NXTPT:    IN XN,PA3    ; BRING IN THE NEW SAMPLE XN ;
  131.     LAC XN,4
  132.     SUB ONE,15
  133.     SACL XN,0
  134. ;
  135.     ZAC
  136. ;
  137.     LT XNM17;    DUE TO SYMMETRY h(0) = h(79) ;
  138.     MPY H0        ; x(n-79) * h(79) ;
  139. ;
  140.     LTD XNM16
  141.     MPY H1        ; h(1) = h(78) ;
  142. ;
  143.     LTD XNM15
  144.     MPY H2
  145. ;
  146.     LTD XNM14
  147.     MPY H3
  148. ;
  149.     LTD XNM13
  150.     MPY H4
  151. ;
  152.     LTD XNM12
  153.     MPY H5
  154. ;
  155.     LTD XNM11
  156.     MPY H6
  157. ;
  158.     LTD XNM10
  159.     MPY H7
  160. ;
  161.     LTD XNM9
  162.     MPY H8
  163. ;
  164.     LTD XNM8
  165.     MPY H8
  166. ;
  167.     LTD XNM7
  168.     MPY H7
  169. ;
  170.     LTD XNM6
  171.     MPY H6
  172. ;
  173.     LTD XNM5
  174.     MPY H5
  175. ;
  176.     LTD XNM4
  177.     MPY H4
  178. ;
  179.     LTD XNM3
  180.     MPY H3
  181. ;
  182.     LTD XNM2
  183.     MPY H2
  184. ;
  185.     LTD XNM1
  186.     MPY H1
  187. ;
  188.     LTD XN
  189.     MPY H0
  190. ;
  191.     APAC
  192. ;
  193.     sach yn,4
  194.     LAC YN,12
  195.     ADDH MASK1
  196.     SACH YN,0
  197. ;
  198.     
  199.     OUT YN,PA4    ; OUTPUT THE FILTER RESPONSE y(n) ;
  200. ;
  201.     B WAIT        ; GO GET THE NEXT POINT ;
  202. ;
  203.     END
  204.